//
//  AddPicCollectionView.swift
//  新浪微博项目
//
//  Created by 王炯 on 16/7/27.
//  Copyright © 2016年 王炯. All rights reserved.
//

import UIKit

class AddPicCollectionView: UICollectionView
{

    //定义一个闭包，用于实现点击最后一个cell的触发事件
    var closure:(() -> ())?
    
    
    
    //定义一个UIImage的数组，用于设置collectionView上的cell
    lazy var dataArray:[UIImage] = [UIImage]()
    
    
    //外接给外部，用于给图片数组设置相册中的数据
    //从外界获取照片时，添加到image数组中
    func AddImageToArray(image:UIImage)
    {
        self.dataArray.append(image)
        
        
        //重新显示
        hidden = false
        
        
        //刷新界面UI
        self.reloadData()
    }
    
    
    //重写CollectionView的init方法，并在这上面重新设置view的布局
    override init(frame: CGRect, collectionViewLayout layout: UICollectionViewLayout)
    {
        //利用流水布局重新设置collectionView
        super.init(frame: frame, collectionViewLayout: UICollectionViewFlowLayout())
        
        
        
        //重新布局界面
        self.setUpUI()
    }
    
    required init?(coder aDecoder: NSCoder)
    {
        fatalError("init(coder:) has not been implemented")
    }

    
    //重写布局界面
    func setUpUI()
    {
        self.backgroundColor = UIColor.whiteColor()
        // 首次创建 没有图片 不显示
        hidden = true
        
        //获取layout
        let layout:UICollectionViewFlowLayout = self.collectionViewLayout as! UICollectionViewFlowLayout
        
        //设置cell间的间距
        let cellMargin:CGFloat = 5
        //设置cell的宽度(高度)
        let cellWH = (SCREENW - 20 - 2*cellMargin) / 3
        
        //设置layout
        layout.itemSize = CGSizeMake(cellWH, cellWH)
        layout.minimumLineSpacing = cellMargin
        layout.minimumInteritemSpacing = cellMargin
        
        //设置代理源
        self.dataSource = self
        self.delegate = self
        
        
        //注册cell
        self.registerClass(AddImageCell.self, forCellWithReuseIdentifier: "picCell2")
        
    }

}

//定义一个扩展，实现代理源方法
extension AddPicCollectionView:UICollectionViewDataSource,UICollectionViewDelegate
{
    //(1)组
    func numberOfSectionsInCollectionView(collectionView: UICollectionView) -> Int
    {
        return 1
    }
    //(2)item
    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
    {
        
        //判断数组大小(0和9是个例外)
        if self.dataArray.count == 0 || self.dataArray.count == 9
        {
            return self.dataArray.count
        }
        
        //其他数组大小时加一(为增加按钮)
        return self.dataArray.count + 1
    }
    //(3)cell
    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
    {
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier("picCell2", forIndexPath: indexPath) as! AddImageCell
        
        // 判断是最后一个item 代表要显示加号图片
        if indexPath.item == self.dataArray.count
        {
            cell.image = nil
        }
        //如果不是最后一个item
        else
        {
             cell.image = self.dataArray[indexPath.item]
        }
        
        //实现cell的关闭按钮触发事件
        cell.closeClosure = {[weak self] () -> () in
            
            self?.dataArray.removeAtIndex(indexPath.item)
            
            //隐藏View
            if self?.dataArray.count == 0
            {
                self?.hidden = true
            }
            
            //刷新UI
            self?.reloadData()
        }

        
        //cell.backgroundColor = RandomColor()
        
        return cell
    }
    
    //(4)点击最后一个cell的触发事件
    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
    {
         //判断只有最有一个cell才可以点击
        if indexPath.item == self.dataArray.count
        {
            //利用闭包让控制器访问相册
            closure?()
        }
    }
    
}
